package com.itheima.stream;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

    /*现在有两个ArrayList集合，分别存储6名男演员名称和6名女演员名称，要求完成如下的操作

    - 男演员只要名字为3个字的前2人
    - 女演员只要姓林的，并且不要第一个
    - 把过滤后的男演员姓名和女演员姓名合并到一起
    - 把上一步操作后的元素作为构造方法的参数创建演员对象,遍历数据

    演员类Actor已经提供，里面有一个成员变量，一个带参构造方法，以及成员变量对应的get/set方法
    */

public class StreamDemo05 {
    public static void main(String[] args) {
        ArrayList<String> manActors = new ArrayList<>();
        ArrayList<String> womanActors = new ArrayList<>();
        manActors.add("周润发");
        manActors.add("张国荣");
        manActors.add("刘德华");
        manActors.add("李连杰");
        manActors.add("周星驰");
        manActors.add("李连杰");

        womanActors.add("杨颖");
        womanActors.add("林青霞");
        womanActors.add("邱淑贞");
        womanActors.add("杨幂");
        womanActors.add("王祖贤");
        womanActors.add("杨紫");

        Stream<String> manStream = manActors.stream().filter(name -> name.length() == 3)
                .limit(2);
        Stream<String> womanStream = womanActors.stream().filter(name -> name.startsWith("杨"))
                .skip(1);

        Stream<String> concat = Stream.concat(manStream, womanStream);


        //流经过forEach 之后就被关闭，会导致分割线下的代码异常，因为没有操作对象
        concat.forEach(s -> System.out.println(new Actor(s)));

//        System.out.println("===============");
//
//        List<String> collect = concat.collect(Collectors.toList());
//        for (String s : collect) {
//            System.out.println(new Actor(s));
//        }

    }
}

class Actor{
    private String name;

    public Actor(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Actor{" +
                "name='" + name + '\'' +
                '}';
    }
}
